
FROM ghcr.nju.edu.cn/astral-sh/uv:python3.12-bookworm
# 设置时区为北京时间（Asia/Shanghai）
ENV TZ=Asia/Shanghai
WORKDIR /app

COPY pyproject.toml uv.lock /app/
COPY ./README.md /app/

# 创建虚拟环境并安装依赖
RUN uv venv --python 3.12 /app/.venv && \
    . /app/.venv/bin/activate && \
    uv sync --index-url https://pypi.tuna.tsinghua.edu.cn/simple


COPY ./.env.prd /app/.env
# 复制整个项目目录（包含所有依赖的Python模块）
COPY app ./app/


# 设置PYTHONPATH以确保可以找到所有模块
ENV PYTHONPATH=/app
ENV PYTHONUNBUFFERED=1
ENV ENV=prd
# 设置虚拟环境
ENV VIRTUAL_ENV=/app/.venv
ENV PATH="$VIRTUAL_ENV/bin:$PATH"


# 创建非root用户
RUN groupadd -r appuser && useradd -r -g appuser appuser
# 设置适当的权限
RUN chown -R appuser:appuser /app
# 切换到非root用户
USER appuser
# 运行服务
CMD ["/bin/bash", "-c", ". /app/.venv/bin/activate && uvicorn main:app --workers 4 --host 0.0.0.0 --port 7860 --app-dir ./app"]
